package response

type ResCode int64

const (
	CodeSuccess ResCode = 0
	CodeError   ResCode = 1
)

const (
	/*
	   1001-1010 通用操作相关
	*/
	// 操作失败
	CodeOperationFail ResCode = 1001 + iota
	// 查询操作失败
	CodeSelectOperationFail
	// 更新操作失败
	CodeUpdateOperationFail
	// 删除操作失败
	CodeDeleteOperationFail
	// 新增操作失败
	CodeInsertOperationFail
	/*
	   1011-1050 登录注册相关
	*/
	// 登录失败，账号或者密码错误
	CodeLoginFailResCode ResCode = 1011 + iota
	// 登录失败，请重试
	CodeLoginFailReLogin
	// 验证码错误
	CodeLoginFailCode
	// 无效token
	CodeInvalidToken
	// 注册失败，手机号已经存在
	CodeRegisterFail

	/*
	   1071-1100 文件、资源相关
	*/
	// 文件超出规定大小
	CodeFileOverstepSize ResCode = 1071 + iota
	// 文件上传失败
	CodeFileUploadFail
	// 文件不存在，加载失败
	CodeFileLoadingFail
	// 文件类型不支持查看
	CodeFileRequestFail
	// 请上传图片类型的文件
	CodeFileImageFail

	/*
	   1101-1199 请求参数相关
	*/
	// 参数无效
	CodeParamIsInvalid ResCode = 1101 + iota
	// 参数为空
	CodeParamIsBlank
	// 参数类型错误
	CodeParamTypeBindError
	// 参数缺失
	CodeParamNotComplete
)

var codeMap = map[ResCode]string{
	CodeSuccess:             "成功",
	CodeError:               "失败",
	CodeLoginFailResCode:    "登录失败，账号或者密码错误",
	CodeLoginFailReLogin:    "登录失败，请重试",
	CodeLoginFailCode:       "验证码错误",
	CodeInvalidToken:        " 无效token",
	CodeRegisterFail:        "注册失败，手机号已经存在",
	CodeOperationFail:       "操作失败",
	CodeSelectOperationFail: "查询操作失败",
	CodeUpdateOperationFail: "更新操作失败",
	CodeDeleteOperationFail: "删除操作失败",
	CodeInsertOperationFail: "新增操作失败",
	CodeFileOverstepSize:    "文件超出规定大小",
	CodeFileUploadFail:      "文件上传失败",
	CodeFileLoadingFail:     "文件不存在，加载失败",
	CodeFileRequestFail:     "文件类型不支持查看",
	CodeFileImageFail:       "请上传图片类型的文件",
	CodeParamIsInvalid:      "参数无效",
	CodeParamIsBlank:        "参数为空",
	CodeParamTypeBindError:  "参数类型错误",
	CodeParamNotComplete:    "参数缺失",
}

func (c ResCode) Msg() string {
	msg, ok := codeMap[c]
	if !ok {
		msg = codeMap[CodeError]
	}
	return msg
}
